package org.lanqiao.practice_2;

import org.junit.Test;

public class TestDriver4 {
	// 希尔排序
	public static void shellSort(int[] ar) {
		// 确定数组的长度
		int index = ar.length-1;
		// 把长度除以2以后作为第一次的增量
		int inc = index / 2;
		while (inc > 0) {
			// 利用直接插叙对数据进行排序
			for (int i =inc; i <=index; i++) {
				int temp=ar[i];
				int j=i-inc;
				//分组
				for(;j>=0&&temp<ar[j];j-=inc){
					ar[j+inc]=ar[j];
				}
				ar[j+inc]=temp;
			}
			inc = inc / 2;
		}
	}

	// 写一个测试方法
	@Test
	public void TestDriver() {
		int[] ar = {18, 84, 2, 14, 2, 10, 20, 15,5};
		shellSort(ar);
		for (int i = 0; i < ar.length; i++) {
			System.out.print(ar[i] + "  ");
		}
	}

}
